﻿using System;
using System.IO;
using Controller2.BLL;
using Controller2.Models;
using Stimulsoft.Report;
using System.Data;

namespace Controller2.Relatorios
{
    public partial class MostraRelatorio : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            ControllerBDModelContainer db = new ControllerBDModelContainer();
            var nomeEmp = EmpresaBll.GetNomeEmpresa();

            //Guid idRelatorio = new Guid("052385F6-89CF-4FC3-84C0-E274BFF15940"); //clientes
            Guid idRelatorio = new Guid(); //jobs
            
            var relatorio = Request.QueryString["nomeRelatorio"];
            var cod = Request.QueryString["codigo"] != null ? Request.QueryString["codigo"].ToString() : "0";
            var dataInicial = Request.QueryString["dataInicio"] != null ? Request.QueryString["dataInicio"].ToString() : "";
            var dataFinal = Request.QueryString["dataFim"] != null ? Request.QueryString["dataFim"].ToString() : "";
            var codigo = !string.IsNullOrWhiteSpace(cod) ? Convert.ToInt32(cod) : 0;
            var dt = new DataTable();

            switch (relatorio)
            {
                default:
                    break;
                case "Brainstorms":
                    if (codigo > 0)
                    {
                        idRelatorio = new Guid("1041FD21-A8D7-4282-8076-40777F65DF09"); // brainstorms por codigo
                    }
                    else if (!string.IsNullOrWhiteSpace(dataInicial))
                    {
                        idRelatorio = new Guid("10381B14-9AA7-46D2-AB49-C0F67E1B04CD"); // brainstorms por data
                    }
                    else
                    {
                        idRelatorio = new Guid("BBA6DE88-F318-4AB0-8967-7DDCE07B9050"); // brainstorms
                    }                    
                    dt = BrainstormBll.Relatorios(db, codigo, dataInicial, dataFinal);
                    break;
                case "BrainstormsPorTopico":                    
                    idRelatorio = new Guid("46BB8A97-8861-4D03-9D93-72E2310EF7D1"); // brainstorms por topico
                    dt = BrainstormBll.RelatoriosPorTopico(db, codigo);
                    break;
                case "BrainstormsPorCampanha":
                    idRelatorio = new Guid("90709C90-5A65-401D-85F6-445F2362395A"); // brainstorms por campanha
                    dt = BrainstormBll.Relatorios(db, codigo, dataInicial, dataFinal, true);
                    break;
                case "Campanhas":
                    if (codigo > 0)
                    {
                        idRelatorio = new Guid("BAF45E63-C428-4E65-BF24-99924B623D19"); // campanhas por codigo
                    }
                    else if (!string.IsNullOrWhiteSpace(dataInicial))
                    {
                        idRelatorio = new Guid("4F25DC17-B83D-43A2-A520-407CE2619F43"); // campanhas por data
                    }
                    else
                    {
                        idRelatorio = new Guid("6B0A1784-3C55-4B97-A80A-143DDF3ADF9C"); // campanhas
                    }                    
                    dt = CampanhaBll.Relatorios(db, codigo, dataInicial, dataFinal);
                    break;
                case "CampanhasPorCliente":
                    idRelatorio = new Guid("EAEBE701-0ABE-45EC-B2A1-B7651C95A3FF"); // campanhas por cliente
                    dt = CampanhaBll.Relatorios(db, codigo, dataInicial, dataFinal, true);
                    break;
                case "Entradas":
                    if (!string.IsNullOrWhiteSpace(dataInicial))
                    {
                        idRelatorio = new Guid("88C0C766-AD73-4F4E-A846-C1A40351999A"); // entradas por data
                    }
                    else
                    {
                        idRelatorio = new Guid("21577796-3522-4927-962A-22DDFB545632"); // entradas
                    }                    
                    dt = EntradaBll.Relatorios(db, codigo, dataInicial, dataFinal);
                    break;
                case "EntradasPorCliente":
                    idRelatorio = new Guid("6652BBF3-4C8F-46E5-B792-3A71F975652B"); // entradas por cliente
                    dt = EntradaBll.Relatorios(db, codigo, dataInicial, dataFinal, true);
                    break;
                case "EntradasPorCampanha":
                    idRelatorio = new Guid("8CEBD245-0231-4888-B811-F894BA146A73"); // entradas por campanha
                    dt = EntradaBll.Relatorios(db, codigo, dataInicial, dataFinal, campanha: true);
                    break;
                case "Jobs":
                    if (codigo > 0)
                    {
                        idRelatorio = new Guid("CB4A8D20-315A-4460-9C8F-D0C323343858"); // jobs por codigo
                    }
                    else if (!string.IsNullOrWhiteSpace(dataInicial))
                    {
                        idRelatorio = new Guid("819A0021-9F90-4084-AEFC-06A23D374B11"); // jobs por data
                    }
                    else
                    {
                        idRelatorio = new Guid("BE08BBA5-7F7C-47D4-A5C4-DD1EC8123297"); // jobs
                    }                    
                    dt = JobBll.Relatorios(db, codigo, dataInicial, dataFinal);
                    break;
                case "JobsPorCampanha":
                    idRelatorio = new Guid("7A9D1C36-216F-4F76-B839-0CC5045A743B"); // jobs por codigo da campanha
                    dt = JobBll.Relatorios(db, codigo, dataInicial, dataFinal, campanha: true);
                    break;
                case "JobsPorCliente":
                    idRelatorio = new Guid("15CF52DB-23C2-4738-9F64-7CC04FAC29A6"); // jobs por codigo do cliente
                    dt = JobBll.Relatorios(db, codigo, dataInicial, dataFinal, true);
                    break;
                case "Saidas":                    
                    if (!string.IsNullOrWhiteSpace(dataInicial))
                    {
                        idRelatorio = new Guid("DD0773ED-28E1-404E-9F83-981F6400336D"); // saídas por data
                    }
                    else
                    {
                        idRelatorio = new Guid("3FACB016-FCBA-40F1-B968-00FB2E6D3EE2"); // saídas
                    }                    
                    dt = SaidaBll.Relatorios(db, codigo, dataInicial, dataFinal);
                    break;
                case "SaidasPorFornecedor":
                    idRelatorio = new Guid("F3FF676D-2684-4C88-9EC1-3DAA227E2D8C"); // saídas
                    dt = SaidaBll.Relatorios(db, codigo, dataInicial, dataFinal, true);
                    break;
            }
                        
            var relModel = RelatorioBll.GetRelatorio(db, idRelatorio);

            StiReport rep = new StiReport();            
            rep.Load(new MemoryStream(relModel.Binario));
            rep.RegData(dt);
            rep.Compile();

            //if (codigo > 0)
            //{
            //    rep.CompiledReport.Variables["Codigo"] = codigo;
            //}
            if (!string.IsNullOrWhiteSpace(dataInicial))
            {
                rep["DataInicial"] = dataInicial;
            }
            if (!string.IsNullOrWhiteSpace(dataFinal))
            {
                rep["DataFinal"] = dataFinal;
            }
            rep["Empresa"] = nomeEmp;

            rep.Render();
            Relat.Report = rep;
        }
    }
}